SecondChance(TM) de PowerQuest(R) version 2.06
Program: Secondechance 2.06
Infection : Time limits 15 jours
Tools:Soft-ice , windasm v8.09 , editeur hexdecimal
But: cracke le logiciel et utilisation de windasm surtout!!
Url :
http://www.powerquest.com/secondchance/fr/version
Intro :
Bienvenue dans le logiciel SecondChance de PowerQuest. Il a déjà dû vous arriver de modifier un paramètre de votre système et de vous rendre compte que son fonctionnement en était ralenti, ou de télécharger un fichier qui a endommagé votre système. Peut-être avez-vous essayé sans succès de vous débarrasser d'un programme partiellement installé ou vous êtes-vous demandé ce qui avait pu survenir dans votre système, car votre ordinateur ne fonctionnait plus aussi bien qu'auparavant.
SecondChance vous permet de rétablir votre ordinateur à un état antérieur (appelé point de contrôle) qui vous donnait entière satisfaction. Il vous suffit de choisir le point de contrôle où vous voulez revenir, de cliquer sur un bouton et SecondChance restaurera l'état de l’ordinateur tel qu'il était à ce point. SecondChance est le parfait compagnon pour la sauvegarde de tout logiciel de création d'image de disque dur, tel que PowerQuest Drive Image.
Copyright © 2000 PowerQuest Corporation. All rights reserved.
En gros ce logiciel semble tres interessant il pourra reinstaller la configuration précédente du pc apres un bug : par exemple un probleme de vxd ,bon bref, et surtout utile pour le cracking !!!!.
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
Debut:
Salut tout le monde apres 2 mois vacances on a tout oublié hein ?
Oui eh ben c’est le moment de se rattraper en faisant un petit crack.
Je tiens à preciser que si vous avez cracké ce logiciel et que vs avez des precisions à m’apporter sur quoique ce soit : par exemple une erreur , une mauvaise comprehension du code ou une autre approche du code mailez moi
pan.ma@wanadoo.fr parce que je suis encore newbies je crois quoique……… ! ! !
I) Analyse du programme
On lance le logiciel pour la premire fois , splash, une box s’affiche à l’écran nous disant qu’il nous reste 15 jours d’utilisation.
On appuie sur le bouton OK et on regarde dans le menu option
à a propos de
Apres notre forfait de 15 jours une autre box s’affiche :

II) Utilsation de Windasm et etude du Listing
Lancez windasm et chargez le fichier sctray.exe grace au menu "disassembler" puis"open file disassembler" une fois cela fait regardez
Dans les strings datas references:

et voilà ce qu'on a

Cliquez deux fois sur la strings reference et nous tombons dans le code windasm
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00409AC6(C), :00409ACA(C)
* Possible Reference to String Resource ID=00459: "Cette version d'évaluation a expiré. L'application est désac"
:00409AF3 68CB010000 push 000001CB
:00409AF8 8D4DF0 lea ecx, dword ptr [ebp-10]
:00409AFB E8D6050200 call 0042A0D6
:00409B00 8B0D00EC4400 mov ecx, dword ptr [0044EC00]
:00409B06 894DE4 mov dword ptr [ebp-1C], ecx
:00409B09 68CC010000 push 000001CC
:00409B0E 8D4DE4 lea ecx, dword ptr [ebp-1C]
:00409B11 C645FC01 mov [ebp-04], 01
-On remarque qu'il y'a 2 saut((C)onditional Jump at Addresses) vers cette routine donc faudra faire en sorte de ne pas passer par là.On clique 2 fois sur
00409AC6(C), avec le bouton droit de la souris ou sur 00409ACA(C) qui nous ammene directement sur le saut , c'est pas magique ça!!.Donc on arrive là:
:00409A53 FF15207E4500 Call dword ptr [00457E20]
:00409A59 833D1827450001 cmp dword ptr [00452718], 00000001 ; memoire suspecte est-ce notre flag utilisateur ?
:00409A60 0F85DD040000 jne 00409F43
:00409A66 B9F0284500 mov ecx, 004528F0
:00409A6B E8E04E0000 call 0040E950 ; call verication statut uilisateur
:00409A70 84C0 test al, al
:00409A72 0F8485010000 je 00409BFD ; saute registered utilisateur
:00409A78 8B0D00EC4400 mov ecx, dword ptr [0044EC00]
:00409A7E 894DF0 mov dword ptr [ebp-10], ecx
:00409A81 8D55DC lea edx, dword ptr [ebp-24]
:00409A84 C745FC00000000 mov [ebp-04], 00000000
:00409A8B 52 push edx
:00409A8C E80B9C0100 call 0042369C ; call getlocaltime proc
:00409A91 8B75DC mov esi, dword ptr [ebp-24]
:00409A94 B9F0284500 mov ecx, 004528F0
:00409A99 E852520000 call 0040ECF0 ; call expire value
:00409A9E 8B38 mov edi, dword ptr [eax]
:00409AA0 B9F0284500 mov ecx, 004528F0
:00409AA5 E806510000 call 0040EBB0
:00409AAA 8B00 mov eax, dword ptr [eax]
:00409AAC 8D4DD8 lea ecx, dword ptr [ebp-28]
:00409AAF 51 push ecx
:00409AB0 6A00 push 00000000
:00409AB2 57 push edi
:00409AB3 50 push eax
:00409AB4 6800000080 push 80000000
:00409AB9 E862370000 call 0040D220 ; "CLSID\{001be2d700-39f8-11d3-8d77-0020182b76cc}" Ouvre une cle dans la base de registre
:00409ABE 8B45D8 mov eax, dword ptr [ebp-28]
:00409AC1 83C414 add esp, 00000014
:00409AC4 85C0 test eax, eax
:00409AC6 742B je 00409AF3 ; saut vers nag proc si eax and eax =0
:00409AC8 2BF0 sub esi, eax
:00409ACA 7827 js 00409AF3 ; saut vers nag proc
:00409ACC B9F0284500 mov ecx, 004528F0
:00409AD1 E85A500000 call 0040EB30 ; call expiration lenght proc
:00409AD6 8BC8 mov ecx, eax
:00409AD8 B807452EC2 mov eax, C22E4507
:00409ADD F7EE imul esi
:00409ADF 03D6 add edx, esi
:00409AE1 C1FA10 sar edx, 10
:00409AE4 8BC2 mov eax, edx
:00409AE6 C1E81F shr eax, 1F
:00409AE9 03D0 add edx, eax
:00409AEB 3BD1 cmp edx, ecx ; saute si edx <= ecx continue evaluation sinon vers nag proc
:00409AED 0F8EFB000000 jle 00409BEE
De l'addresse 409a8c jusqu'à l'addresse 409aed le code en vert sera celui qui sera sollicité lors de notre periode d'evaluation.J'ai mis quelques commentaires qui vous permettra de comprendre le raissonnement du code.Je tiens à dire que je n'ai pas trop etudié la partie en vert donc si quelqu'un l'a fait mail-me.Je tiens aussi à dire qu'il y'a plusieurs façons de s'enregistrer pour ma part la mienne est peut-etre peu orthodoxe donc si vous avez d'autres solutions mail-me.
Donc le code que j'ai etudié rapidement est en blanc.Il m'est apparu plus interessant vous allez voire vous même!!
Imaginons que vous ayez debuggé l'application , euh merde vous savez pas le faire puisque c'est un tutorial. Il faut tout vous apprendre ou quoi?
C'est simple , on choisit le menu "debug" ,"load process" et "run"
(F9)Et n'oubliez surtout pas de mettre un breakpoint (un arrêt dans le code) .Cliquez par exemple avec le bouton gauche de la souris à l'addresse 409a53 puis appuyez sur
F2 et une ligne jaune apparaîtra dans le code desassemblé et c'est alors que vous appuyez sur F9comme ceci:

Normallement nous arrivons en 409a53 appuyez sur f8 c'st à dire debuggage pas à pas, on n'est maintenant ici:
:00409A59 833D1827450001 cmp dword ptr [00452718], 00000001 ; memore suspecte est-ce notre flag utilisateur
:00409A60 0F85DD040000 jne 00409F43 ; si resultat du cmp est <>0 on saute sinon continue
:00409A66 B9F0284500 mov ecx, 004528F0
:00409A6B E8E04E0000 call 0040E950 ; call verication statut uilisateur
:00409A70 84C0 test al, al ; si eax=0 saute sinon va vers routine evalution 15 jours proc ou mechant nag
:00409A72 0F8485010000 je 00409BFD ; saute bon garçon va vers routine registered
Comme je l'ai dit en commentaire cette addresse memoire me paraît suspecte elle ressemble à un flag utilisateur regardons et modifions là (ne le faites pas si vs ne voulez pas recommencez tout ce que vs avez fait depuis le debut) et puis bref de toute façon ce n'est qu'un tutorial vous refairez la manip au temps de fois qu'elle vs plaira, c'est un entrainement.
Appuyer sur le bouton de la fenetre principale "modify data" et vs obtenez ceci:

dans la fenêtre des "Modify data" tapez dans le champ "Mem loc" 4052718 puis "enter" vs voyez le contenu de la memoire dans le champ "Mem" il est de
00000001 .Pour la modifier tapez dans le champs de "Enter Value" 00000000 puis tapez sur le petit bouton "mem" et à ce moment apparaitra la nouvelle valeur 00000000 .Apres appuyez sur le le bouton "Modify" puis "close" et les changements seront appliqués.Vs retournez dans la fenetre principale et vs appuyez sur F9 et le prog demmarre allez voir dans le menuitem "à propos de"vous verez toujours la mechante sring de la box1 qui nous dit qu'il reste 15 jours d'utilisation.Donc c'est pas la bonne methode.
Continuons nos investigations allons à l'addresse
call 0040E950 qui est à l'addresse 409a6b que j'ai nomméeCall_Verf_reg_user (tout simplemnt l'appel de la verification du statut utilisateur).
J'avoue que j'ai tracé ce call au feelings donc s'il y'a des personnes qui ont compris bien le fonctionnement de ce call vous savez ce qu'il vs reste à faire n'est-ce pas
J !!Je sais pour l'instant on a rien encore fais de special!!
Je mettrais des commentaires pour vous permettre de suivre le raisonnement.
Entrant dans le call on arrive ici:
* Referenced by a CALL at Addresses:
|:004074B0 , :00409A6B , :00409C23 , :0040BEFE ;
4 appels vers cette routine plutot louche donc cette partie du code doit être interessante|
:0040E950 64A100000000 mov eax, dword ptr fs:[00000000]
:0040E956 6AFF push FFFFFFFF
:0040E958 6860064400 push 00440660
:0040E95D 50 push eax
:0040E95E A07F294500 mov al, byte ptr [0045297F]
:0040E963 64892500000000 mov dword ptr fs:[00000000], esp
:0040E96A 83EC08 sub esp, 00000008
:0040E96D 84C0 test al, al
; si eax<>0 on saute sinon on continue:0040E96F 53 push ebx
:0040E970 0F859D010000 jne 0040EB13
; on saute pas:0040E976 A100EC4400 mov eax, dword ptr [0044EC00]
:0040E97B B301 mov bl, 01
:0040E97D 881D7F294500 mov byte ptr [0045297F], bl
:0040E983 89442404 mov dword ptr [esp+04], eax
-------------snip----------------------------
* Possible StringData Ref from Data Obj
->"PRODUCT"|
:0040E9A1 6890E64400 push 0044E690
:0040E9A6 51 push ecx
:0040E9A7 885C241C mov byte ptr [esp+1C], bl
:0040E9AB E8235C0000 call 004145D3
; je sais pas ce qu'il fait:0040E9B0 83C408 add esp, 00000008
:0040E9B3 85C0 test eax, eax
;si eax<>0 on saute sinon on continue:0040E9B5 0F85B1000000
jne 0040EA6C ; il faut surtout pas sauter sinon mauvais garçon (endroit à patcher):0040E9BB 68E8030000 push 000003E8
:0040E9C0 68E8030000 push 000003E8
:0040E9C5 8D4C240C lea ecx, dword ptr [esp+0C]
:0040E9C9 E8C8B50100 call 00429F96
:0040E9CE 50 push eax
:0040E9CF 68E8244500 push 004524E8
* Possible StringData Ref from Data Obj
->"IsDemo"|
:0040E9D4 6888E74400 push 0044E788
* Possible StringData Ref from Data Obj
->"PRODUCT"|
:0040E9D9 6890E64400 push 0044E690
:0040E9DE E87D1F0000 call 00410960
:0040E9E3 83C414 add esp, 00000014
:0040E9E6 8D4C2404 lea ecx, dword ptr [esp+04]
:0040E9EA 6AFF push FFFFFFFF
:0040E9EC E8F4B50100 call 00429FE5
:0040E9F1 8B542404 mov edx, dword ptr [esp+04]
* Possible StringData Ref from Data Obj
->"true"|
:0040E9F5 6880E74400 push 0044E780
:0040E9FA 52 push edx
:
0040E9FB E8D35B0000 call 004145D3 ;je sais pas ce qu'il fait:0040EA00 83C408 add esp, 00000008
:0040EA03 85C0 test eax, eax
; si eax =0 on saute sinon on continue:0040EA05 7416
je 0040EA1D ; on doit sauter sinon mauvais gaarçon (à patcher):0040EA07 8B442404 mov eax, dword ptr [esp+04]
------------------------snip------------------------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040EA05(C)
|
:0040EA1D 8B4C2404 mov ecx, dword ptr [esp+04]
* Possible StringData Ref from Data Obj
->"true"on doit passer par là c'est la bonne routine du bon garçon et du statut de l'utilisateur on |
:0040EA21 6880E74400 push 0044E780
:0040EA26 51 push ecx
:0040EA27 E8A75B0000 call 004145D3
:0040EA2C 83C408 add esp, 00000008
:0040EA2F 8D4C2408 lea ecx, dword ptr [esp+08]
:0040EA33 85C0 test eax, eax
:0040EA35 0F94C0 sete al
:0040EA38 A27E294500 mov byte ptr [0045297E], al
:0040EA3D 8AD8 mov bl, al
:0040EA3F C644241400 mov [esp+14], 00
:0040EA44 E8AAB10100 call 00429BF3
:0040EA49 8D4C2404 lea ecx, dword ptr [esp+04]
:0040EA4D C7442414FFFFFFFF mov [esp+14], FFFFFFFF
:0040EA55 E899B10100 call 00429BF3
:0040EA5A 8AC3 mov al, bl
:0040EA5C 5B pop ebx
:0040EA5D 8B4C2408 mov ecx, dword ptr [esp+08]
:0040EA61 64890D00000000 mov dword ptr fs:[00000000], ecx
:0040EA68 83C414 add esp, 00000014
:0040EA6B C3 ret
J'ai pas trop devellopé cette partie mais là où il y'a du blanc il faut patcher c'est d'accord.
Au fait pour les call en bleu si vous avez une idée sur ce qu'il font mail-me(il commençait à m'enerver).
Bon là je crois qu'on à cracké le programme.
Eh vous vous souvenez de l'addresse memoire en [452718] eh bien elle reçoit
le drapeau de Flag utilisateur registered.Regardez vous même :
:00409C15 FF15E07F4500 Call dword ptr [00457FE0]
:00409C1B 83C404 add esp, 00000004
:00409C1E B9F0284500 mov ecx, 004528F0
:00409C23 E8284D0000 call 0040E950 ; 3 appel verif_reg_user proc
:00409C28 84C0 test al, al
:00409C2A 0F85BB000000 jne 00409CEB ; on saute
----------------snip-----------------------------------------
* Possible StringData Ref from Data Obj ->"PgCpc"
|
:00409D01 68D4E14400 push 0044E1D4
:00409D06 E8D5340000 call 0040D1E0
:00409D0B 8A853CFEFFFF mov al, byte ptr [ebp+FFFFFE3C]
:00409D11 83C414 add esp, 00000014
:00409D14 84C0 test al, al
:00409D16 0F841D020000 je 00409F39
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409D16(C)
|
:00409F39 C7051827450000000000 mov dword ptr [00452718], 00000000
<- drapeau utilisateur registered.
III) RECAPITULONS

Au fait petite precision le prog est protege en ecriture donc le patch ne pourra etre appliqué que si on cree un patch qui deprotegera le prog en ecriture .Par exemple grace à l'api Virtualprotectex.euh je viens de voire qu'on peut le patcher il suffit de copier le dossier Pqsc (dossier cotenant l'exe Sctray) puis de copier le dossier Powerquest dans le repertoire Programmes Files de mettre les sections du programme à E0000020 avec l'outil procdump ou un autre , Et de faire les Modifications suivantes dans la base de registre :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Puis Dans la Clé SecondeChance changer le path comme ceci: C:\
Copie de PQSC\PROGRAM\SCTRAY.EXE Et voilà ceci devrait fonctionner (Photo à l'appui)
ET voici la nouvelle box avec le bon nag!!

Si il y'a en a qui ont des solutions à me proposer mail-me car dans mon coté je chercherai aussi pour le patch parce que ça en fait des modifications!!!.
Greetz to:
Immortal Descendants (il y'a de tres bon cours je vous l'assure) , Christal,Fighting France Forum , et merci à tout le monde.
@+